Technical Field
The embodiments disclosed within relate to multi-processor systems, and more particularly, to the operation of communication channels in a multi-processor system.
Description of the Related Art
Processors are used in a variety of applications including cellular telephones, personal computers, servers, and distributed computing systems. In some applications, multiple processors or processor cores may be connected together so that computation tasks may be shared among the various processors. Whether used individually, or as part of a group, processors make use of sequential logic circuits, internal memory, registers, state machines, and the like, to execute program instructions and operate on input data.
The performance of computing systems is dependent on both hardware and software. In order to increase the throughput of computing systems, some tasks may be performed in parallel. To this end, compilers may identify tasks which may be performed in parallel in program code, and hardware may include multiple copies of structures to execute the identified tasks. The structures may include functional units, processor cores, and nodes. With various functional blocks operating on, exchanging, and calculating various groups of data, a need to quickly and reliably exchange data structures between two or more processors may be a requirement.
Communication between the multiple processors may utilize one or more communication networks. An example implementation of such a communication network may include one or more bus switches or network hubs that direct messages from a source processor to a destination processor. If a link between a processor and a bus switch fails or if a bus switch itself becomes inoperable, then communication may be interrupted to the processor, potentially leading to a loss of performance and/or downtime for the system while the failure is diagnosed and repaired.